.slider {
  --ring-slider-thumb-color: var(--ring-content-background-color);
  --ring-slider-thumb-border: var(--ring-main-color);
  --ring-slider-thumb-disabled-color: var(--ring-content-background-color);
  --ring-slider-tag-disabled-text-color: var(--ring-white-text-color);

  position: relative;

  height: calc(var(--ring-unit) / 2);
  padding: var(--ring-unit) 0;

  cursor: pointer;

  &.disabled {
    cursor: default;
  }

  &.marked {
    margin-top: calc(var(--ring-unit) * 3);
  }
}

:global(.ring-ui-theme-dark) {
  .slider {
    --ring-slider-thumb-color: var(--ring-main-color);
    --ring-slider-thumb-border: var(--ring-white-text-color);
    --ring-slider-thumb-disabled-color: var(--ring-disabled-background-color);
    --ring-slider-thumb-disabled-border: var(--ring-border-disabled-color);
    --ring-slider-tag-disabled-text-color: var(--ring-secondary-color);
  }
}

.rail {
  height: inherit;

  border-radius: calc(var(--ring-unit) / 2);

  background-color: var(--ring-selected-background-color);

  &.rounded {
    border-radius: calc(var(--ring-unit) / 2);
  }

  &.disabled {
    background-color: var(--ring-disabled-background-color);
  }
}

.track {
  position: absolute;
  left: 0;

  height: inherit;
  margin-top: calc(var(--ring-unit) / -2);

  border-radius: calc(var(--ring-unit) / 2);

  background-color: var(--ring-main-color);

  &.rounded {
    border-radius: calc(var(--ring-unit) / 2);
  }

  &.disabled {
    background-color: var(--ring-disabled-selected-background-color);
  }
}

.thumb {
  composes: resetButton from '../global/global.css';

  position: absolute;
  z-index: 1;

  box-sizing: border-box;

  width: calc(var(--ring-unit) * 1.5);
  height: calc(var(--ring-unit) * 1.5);
  margin-top: calc(var(--ring-unit) * -1);

  cursor: pointer;
  transform: translateX(-50%);

  border-radius: var(--ring-unit);
  background-color: var(--ring-slider-thumb-color);
  box-shadow:
    0 1px 2px 0 var(--ring-popup-secondary-shadow-color),
    0 2px 8px 0 var(--ring-popup-shadow-components);

  &.disabled {
    cursor: default;

    border: 1px solid var(--ring-slider-thumb-disabled-border);
    background-color: var(--ring-slider-thumb-disabled-color);
  }

  &.dragged {
    cursor: grabbing;

    border: 1px solid var(--ring-slider-thumb-border);
  }
}

.tick {
  position: absolute;

  width: calc(var(--ring-unit) / 2);
  height: calc(var(--ring-unit) / 2);
  margin-top: calc(var(--ring-unit) / -2);
  margin-left: calc(var(--ring-unit) / -4);

  border-radius: calc(var(--ring-unit) / 2);
  background-color: var(--ring-border-hover-color);

  &.active {
    background-color: var(--ring-main-hover-color);
  }

  &.disabled {
    background-color: var(--ring-border-hover-color);
  }
}

.markValue {
  position: absolute;

  margin-top: calc(var(--ring-unit) * -4);
  margin-left: calc(var(--ring-unit) / -4);

  transform: translateX(calc(-50% + 2px));

  color: var(--ring-text-color);

  font-size: var(--ring-font-size-smaller);
  line-height: var(--ring-line-height-lowest);

  &.disabled {
    color: var(--ring-disabled-color);
  }
}

.tag {
  position: absolute;
  z-index: 2;

  margin-top: calc(var(--ring-unit) * -4 - 2px);
  padding: calc(var(--ring-unit) / 4) calc(var(--ring-unit) * 0.75);

  transform: translateX(-50%);

  color: var(--ring-white-text-color);
  border-radius: calc(var(--ring-unit) / 2);

  background-color: var(--ring-main-color);

  font-size: var(--ring-font-size-smaller);
  line-height: var(--ring-line-height-lowest);

  &::after {
    position: absolute;
    top: 100%;
    left: calc(50% - 3px);

    content: ' ';

    border-top: 3px solid var(--ring-main-color);

    border-right: 3px solid transparent;
    border-left: 3px solid transparent;
  }

  &.disabled {
    color: var(--ring-slider-tag-disabled-text-color);
    background-color: var(--ring-border-hover-color);

    &::after {
      border-top: 3px solid var(--ring-border-hover-color);
    }
  }
}
